Unicasting is communication of a single message between one sender and one receiver over a network, while multicasting involves sending a single message from one sender to a group of receivers, where members of the group may assist in propagating the message to other members. TCP/IP has been a dominant de facto unicast protocol standard. However, multicasting technologies over TCP/IP are being developed. Currently, IP multicasting is supported at the data-link layer and physical layer by hardware such as routers and network cards, and by the network layer with rudimentary protocols such as IP. However, the network and data link layer alone do not provide high level applications the means for implementing complete multicast functionality without having to design from scratch specific IP interfaces. Thus, an upper-layer, application-level multicasting framework may be extremely useful in developing multicast applications, especially application-level frameworks that do not rely solely on lower-layer protocols for functionality.
Currently, some applications provide multicast-like functionality, such as chatting and gaming applications, however, these applications are not true multicast as they remain broadcast based, i.e., they rely on a server to broadcast a message to all receivers. Any message propagation using this process involves a client sending a message to the server and then the server application, in turn, broadcasting a separate message to each and every client connected to the server. If there are thousands of clients, even low-bandwidth applications may overload a network. Moreover, multicasting applications that do utilize multicast functionality over TCP/IP are written using unmanaged code.
Furthermore, with the advent of service oriented application frameworks that rely on messaging capabilities, a multicast framework may provide improvements to these service oriented models. For example, service oriented frameworks are based on the provision and consumption of services through a negotiated messaging process, which deviates from the object modeling application systems which relies heavily on passing hard coded objects and classes. While existing service oriented frameworks provide for basic unicast messaging between services, they do not provide multicast functionality. Because such service oriented frameworks, such as Microsoft Indigo, critically rely on a messaging system for consumption of services, multicast functionality on top of this framework and in conjunction with this framework could assist application developers in developing multicast applications, such as peer to peer applications.